package com.dimples.dd.system.service;

import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.system.model.entity.SystemFileDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.dd.system.model.form.FileCreateForm;
import com.dimples.dd.system.model.query.FilePageQuery;
import com.dimples.dd.system.model.vo.FilePageVO;
import com.dimples.dd.system.model.vo.FilePreSignedUrlRespVO;

public interface SystemFileService extends IService<SystemFileDO> {

    /**
     * 上传文件
     *
     * @param name    文件名
     * @param path    路径
     * @param content 文件内容
     * @return 文件路径
     */
    String createFile(String name, String path, byte[] content);

    /**
     * 创建文件
     *
     * @param fileCreateForm 创建信息
     * @return 编号
     */
    Long createFile(FileCreateForm fileCreateForm);

    /**
     * 获取文件内容
     *
     * @param path 路径
     * @return 文件内容
     */
    FilePreSignedUrlRespVO getFilePreSignedUrl(String path) throws Exception;

    /**
     * 删除文件
     *
     * @param id 编号
     */
    void deleteFile(Long id) throws Exception;

    /**
     * 获取文件内容
     *
     * @param configId 配置编号
     * @param path     路径
     * @return 文件内容
     */
    byte[] getFileContent(Long configId, String path) throws Exception;

    /**
     * 获取文件分页
     *
     * @param pageQuery 查询条件
     * @return 分页
     */
    PageResult<FilePageVO> selectFilePage(FilePageQuery pageQuery);
}
